Google Colab notebook example#

from google.colab import drive
drive.mount('/content/drive')
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In[1], line 1
----> 1 from google.colab import drive
      2 drive.mount('/content/drive')

ModuleNotFoundError: No module named 'google'

Install igv-notebook - do this first#

!pip install igv-notebook
Collecting igv-notebook
  Downloading igv_notebook-0.5.2-py3-none-any.whl (302 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 302.5/302.5 kB 3.5 MB/s eta 0:00:00
?25hRequirement already satisfied: ipykernel in /usr/local/lib/python3.10/dist-packages (from igv-notebook) (5.5.6)
Requirement already satisfied: ipython in /usr/local/lib/python3.10/dist-packages (from igv-notebook) (7.34.0)
Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from igv-notebook) (2.27.1)
Requirement already satisfied: ipython-genutils in /usr/local/lib/python3.10/dist-packages (from ipykernel->igv-notebook) (0.2.0)
Requirement already satisfied: traitlets>=4.1.0 in /usr/local/lib/python3.10/dist-packages (from ipykernel->igv-notebook) (5.7.1)
Requirement already satisfied: jupyter-client in /usr/local/lib/python3.10/dist-packages (from ipykernel->igv-notebook) (6.1.12)
Requirement already satisfied: tornado>=4.2 in /usr/local/lib/python3.10/dist-packages (from ipykernel->igv-notebook) (6.3.1)
Requirement already satisfied: setuptools>=18.5 in /usr/local/lib/python3.10/dist-packages (from ipython->igv-notebook) (67.7.2)
Collecting jedi>=0.16 (from ipython->igv-notebook)
  Downloading jedi-0.18.2-py2.py3-none-any.whl (1.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 11.3 MB/s eta 0:00:00
?25hRequirement already satisfied: decorator in /usr/local/lib/python3.10/dist-packages (from ipython->igv-notebook) (4.4.2)
Requirement already satisfied: pickleshare in /usr/local/lib/python3.10/dist-packages (from ipython->igv-notebook) (0.7.5)
Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from ipython->igv-notebook) (3.0.39)
Requirement already satisfied: pygments in /usr/local/lib/python3.10/dist-packages (from ipython->igv-notebook) (2.14.0)
Requirement already satisfied: backcall in /usr/local/lib/python3.10/dist-packages (from ipython->igv-notebook) (0.2.0)
Requirement already satisfied: matplotlib-inline in /usr/local/lib/python3.10/dist-packages (from ipython->igv-notebook) (0.1.6)
Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.10/dist-packages (from ipython->igv-notebook) (4.8.0)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->igv-notebook) (1.26.16)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->igv-notebook) (2023.5.7)
Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.10/dist-packages (from requests->igv-notebook) (2.0.12)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->igv-notebook) (3.4)
Requirement already satisfied: parso<0.9.0,>=0.8.0 in /usr/local/lib/python3.10/dist-packages (from jedi>=0.16->ipython->igv-notebook) (0.8.3)
Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.10/dist-packages (from pexpect>4.3->ipython->igv-notebook) (0.7.0)
Requirement already satisfied: wcwidth in /usr/local/lib/python3.10/dist-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython->igv-notebook) (0.2.6)
Requirement already satisfied: jupyter-core>=4.6.0 in /usr/local/lib/python3.10/dist-packages (from jupyter-client->ipykernel->igv-notebook) (5.3.1)
Requirement already satisfied: pyzmq>=13 in /usr/local/lib/python3.10/dist-packages (from jupyter-client->ipykernel->igv-notebook) (23.2.1)
Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.10/dist-packages (from jupyter-client->ipykernel->igv-notebook) (2.8.2)
Requirement already satisfied: platformdirs>=2.5 in /usr/local/lib/python3.10/dist-packages (from jupyter-core>=4.6.0->jupyter-client->ipykernel->igv-notebook) (3.9.1)
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.1->jupyter-client->ipykernel->igv-notebook) (1.16.0)
Installing collected packages: jedi, igv-notebook
Successfully installed igv-notebook-0.5.2 jedi-0.18.2
import igv_notebook
igv_notebook.igv_version()
'2.15.7'

Load bam file by URL#

import igv_notebook

igv_notebook.init()

b = igv_notebook.Browser(
    {
        "genome": "hg19",
        "locus": "chr22:24,376,166-24,376,456"
    }
)


b.load_track(
    {
        "name": "BAM",
        "url": "https://s3.amazonaws.com/igv.org.demo/gstt1_sample.bam",
        "indexURL": "https://s3.amazonaws.com/igv.org.demo/gstt1_sample.bam.bai",
        "format": "bam",
        "type": "alignment"
    })


b.zoom_in()

Load bam file by file path#

Download example files

!wget https://github.com/igvteam/igv-notebook/raw/main/examples/data/gstt1_sample.bam
!wget https://github.com/igvteam/igv-notebook/raw/main/examples/data/gstt1_sample.bam.bai
--2023-07-25 15:09:57--  https://github.com/igvteam/igv-notebook/raw/main/examples/data/gstt1_sample.bam
Resolving github.com (github.com)... 20.27.177.113
Connecting to github.com (github.com)|20.27.177.113|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.githubusercontent.com/igvteam/igv-notebook/main/examples/data/gstt1_sample.bam [following]
--2023-07-25 15:09:58--  https://raw.githubusercontent.com/igvteam/igv-notebook/main/examples/data/gstt1_sample.bam
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.110.133, 185.199.108.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 60872 (59K) [application/octet-stream]
Saving to: ‘gstt1_sample.bam’

gstt1_sample.bam    100%[===================>]  59.45K  --.-KB/s    in 0.01s   

2023-07-25 15:09:58 (4.29 MB/s) - ‘gstt1_sample.bam’ saved [60872/60872]

--2023-07-25 15:09:58--  https://github.com/igvteam/igv-notebook/raw/main/examples/data/gstt1_sample.bam.bai
Resolving github.com (github.com)... 20.27.177.113
Connecting to github.com (github.com)|20.27.177.113|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.githubusercontent.com/igvteam/igv-notebook/main/examples/data/gstt1_sample.bam.bai [following]
--2023-07-25 15:09:59--  https://raw.githubusercontent.com/igvteam/igv-notebook/main/examples/data/gstt1_sample.bam.bai
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12184 (12K) [application/octet-stream]
Saving to: ‘gstt1_sample.bam.bai’

gstt1_sample.bam.ba 100%[===================>]  11.90K  --.-KB/s    in 0s      

2023-07-25 15:09:59 (66.9 MB/s) - ‘gstt1_sample.bam.bai’ saved [12184/12184]

Load by file path (note use of “path” and “indexPath”)

import igv_notebook

igv_notebook.init()

b = igv_notebook.Browser(
    {
        "genome": "hg19",
        "locus": "chr22:24,376,166-24,376,456",
        "tracks": [{
            "name": "Local BAM",
            "path": "/content/gstt1_sample.bam",
            "indexPath": "/content/gstt1_sample.bam.bai",
            "format": "bam",
            "type": "alignment"
        }]
    })


b.zoom_in()

Define a custom reference genome#

1. Local fasta file#

Download example files

!wget https://github.com/igvteam/igv-notebook/raw/main/examples/data/NC_045512v2.fa
!wget https://github.com/igvteam/igv-notebook/raw/main/examples/data/NC_045512v2.fa.fai
--2023-07-25 15:10:18--  https://github.com/igvteam/igv-notebook/raw/main/examples/data/NC_045512v2.fa
Resolving github.com (github.com)... 20.27.177.113
Connecting to github.com (github.com)|20.27.177.113|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.githubusercontent.com/igvteam/igv-notebook/main/examples/data/NC_045512v2.fa [following]
--2023-07-25 15:10:18--  https://raw.githubusercontent.com/igvteam/igv-notebook/main/examples/data/NC_045512v2.fa
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 30515 (30K) [text/plain]
Saving to: ‘NC_045512v2.fa’

NC_045512v2.fa      100%[===================>]  29.80K  --.-KB/s    in 0.003s  

2023-07-25 15:10:18 (10.2 MB/s) - ‘NC_045512v2.fa’ saved [30515/30515]

--2023-07-25 15:10:18--  https://github.com/igvteam/igv-notebook/raw/main/examples/data/NC_045512v2.fa.fai
Resolving github.com (github.com)... 20.27.177.113
Connecting to github.com (github.com)|20.27.177.113|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.githubusercontent.com/igvteam/igv-notebook/main/examples/data/NC_045512v2.fa.fai [following]
--2023-07-25 15:10:19--  https://raw.githubusercontent.com/igvteam/igv-notebook/main/examples/data/NC_045512v2.fa.fai
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 27 [text/plain]
Saving to: ‘NC_045512v2.fa.fai’

NC_045512v2.fa.fai  100%[===================>]      27  --.-KB/s    in 0s      

2023-07-25 15:10:19 (1.58 MB/s) - ‘NC_045512v2.fa.fai’ saved [27/27]

Define custom reference

Local files – note use of “fastaPath” and “indexPath”

import igv_notebook

igv_notebook.init()

b = igv_notebook.Browser(
    {
        "reference": {
            "id": "NC_045523v3",
            "name": "SARS-COV-2",
            "fastaPath": "/content/NC_045512v2.fa",
            "indexPath": "/content/NC_045512v2.fa.fai"
        },
        "locus": "NC_045512v2:6,684-6,722"
    })

2. Remote fasta file#

Define custom reference

Remote files – note use of “fastaURL” and “indexURL”

import igv_notebook

igv_notebook.init()

b = igv_notebook.Browser(
    {
        "reference": {
            "id": "hg19_1kg",
            "name": "Human (GRCh37/hg19)",
            "fastaURL": "https://storage.googleapis.com/genomics-public-data/references/Homo_sapiens_assembly19_1000genomes_decoy/Homo_sapiens_assembly19_1000genomes_decoy.fasta",
            "indexURL": "https://storage.googleapis.com/genomics-public-data/references/Homo_sapiens_assembly19_1000genomes_decoy/Homo_sapiens_assembly19_1000genomes_decoy.fasta.fai",
        },
        "locus": "chr22:24,376,277-24,376,350"
    })

Embedded features#

Example illustrates embedding features directly in an IGV track configuration, as opposed to loading data from a file.

import igv_notebook

igv_notebook.init()

b = igv_notebook.Browser({
    "genome": "hg19",
    "locus": "chr20:1,233,645-1,235,507"
})

b.load_track({
    "name": "Copy number",
    "type": "seg",
    "displayMode": "EXPANDED",
    "height": 50,
    "isLog": True,
    "features": [
        {
            "chr": "chr20",
            "start": 1233820,
            "end": 1235000,
            "value": 0.8239,
            "sample": "TCGA-OR-A5J2-01"
        },
        {
            "chr": "chr20",
            "start": 1234500,
            "end": 1235180,
            "value": -0.8391,
            "sample": "TCGA-OR-A5J3-01"
        }
    ]
})

b.load_track({
    "name": "Annotations",
    "type": "annotation",
    "displayMode": "EXPANDED",
    "features": [
        {
            "chr": "chr20",
            "start": 1233820,
            "end": 1234000,
            "name": 'Feature 1',
            "color": 'rgb(100,100,0)'
        },
        {
            "chr": "chr20",
            "start": 1234500,
            "end": 1235180,
            "name": 'Feature 2',
            "color": "red"
        }
    ]
})

Embedded data URI#

import igv_notebook

igv_notebook.init()

b = igv_notebook.Browser(
    {"reference":
      {
         "fastaURL": "data:application/gzip;base64,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"
      }
    }
)


b.load_track(
{
    "name": "Annotations",
    "url": "data:application/gzip;base64,H4sIAL2B61oC/6VVy24UQQw8N79CJ2q/bSFOCUK5cAEk/v9LKM+S7AxiQhZW2larH+Vyudzz8PRwd/f4/YcOd61RIT6eHj8+PC/ff/ry9dvqn4Wl1D1/uO5h1vuft/0VpcL30vtjjfc7wDV4MPEklrEml+u7F5BBuDooXeo0MHvSDYF3iIhMw3JyLp1kCC42SdaklEnuk5dMZp/U+ywYMjEBVw8wpSmMA4pLhjW5/JHUaAgsp5PMTM1Z5NiRjFneZ1d0GFq4T+SFOa/o4Lowl2LEUVKcVCXCmAujaXOwSJzxRTjvqt5U3feiYbUGRZmcqiaidU9vV20HuYYNbvqdSKuDpDkDSYvQNOhWFdih2HNCwowRYpxyoiVyC6cd5GaiAJfk5nHwUKAMr3oIWoauC/KbIu8QEXiNaCX+zz/2u382zIJhIDVNNsBw9JX0mtp20uSaxqTTTWrGAmhw0gwDF3BeM1HomTAfDGg6y9Jm5bKDWVA64XylLKV8S4O9AHZRCP2lumWE6SGulbSj4jyywVY3mfQK2SZNvwrrUI740phTUYJk3drw2DcFk6dEnFJyW3aTGFfIpkTdus3pV98EUT96kdO6SBr9HOz7Jm15W03XuUpiegOlHeJmXojwL+ZVmNf/YF7dSt2Y0s+XWzclTAmfOq5AdTEKOLjrYPCyJbC8S+IuPvEYQhYuDP0KJgfBxqtgYxgaVl47dRjeRBKiRmfymHIeK/Z84KIP48OV/eXaAFugPehmYYYitXlHqQ7RfTvIduoXvIZsBwv/PfoVFMWBgwiTm3L27XN8Y9RjzhqxS/knGgV00ggIAAA=",
    "displayMode": "SQUISHED",
    "indexed": False,
    "type": "annotation",
    "format": "bed"
})

b.search("CIC--DUX4:10,796-10,844")

Regions of Interest (ROI)#

Example 1: Specify regions of interest in browser configuration#

In this example three sets of ROI are configured

ROI set 1 - a global ROI set loaded from a BED file ROI set 2 - a global ROI set specified inline ROI set 3 - a track specific ROI set

import igv_notebook

igv_notebook.init()

b = igv_notebook.Browser(
    {
        "locus": "1:67,655,272-67,684,468",
        "genome": "hg19",
        "roi": [
            {
                "name": "ROI set 1",
                "url": "https://s3.amazonaws.com/igv.org.test/data/roi/roi_bed_1.bed",
                "indexed": False,
                "color": "rgba(94,255,1,0.25)"
            },
            {
                "name": "ROI set 2",
                "color": "rgba(3,52,249,0.25)",
                "features": [
                    {
                        "chr": "chr1",
                        "start": 67670000,
                        "end": 67671080
                    },
                    {
                        "chr": "chr1",
                        "start": 67672095,
                        "end": 67673993
                    },
                    {
                        "chr": "chr1",
                        "start": 67674681,
                        "end": 67675237
                    },
                    {
                        "chr": "chr1",
                        "start": 67676055,
                        "end": 67676710
                    },
                    {
                        "chr": "chr1",
                        "start": 67677561,
                        "end": 67677888
                    },
                    {
                        "chr": "chr1",
                        "start": 67679263,
                        "end": 67679394
                    },
                    {
                        "chr": "chr1",
                        "start": 67679950,
                        "end": 67680180
                    },
                    {
                        "chr": "chr1",
                        "start": 67681849,
                        "end": 67682340
                    }
                ]
            }
        ],
        "tracks": [
            {
                "name": "Some features",
                "url": "https://s3.amazonaws.com/igv.org.test/data/roi/some_features.bed",
                "indexed": False,
                "roi": [
                    {
                        "name": "ROI set 3",
                        "url": "https://s3.amazonaws.com/igv.org.test/data/roi/roi_bed_2.bed",
                        "indexed": False,
                        "color": "rgba(255,1,199,0.25)"
                    }
                ]
            }
        ]
    }
)


b.zoom_in()

Example 2 - Load regions of interest after browser creation#

In this example regions of interest are created using the “load_roi” function

import igv_notebook

igv_notebook.init()

b = igv_notebook.Browser(
    {
        "locus": "chr1:67,646,911-67,676,107",
        "genome": "hg19",
        "tracks": [
            {
                "name": "Some Features",
                "url": "https://s3.amazonaws.com/igv.org.test/data/roi/some_features.bed",
                "indexed": False
            }
        ]
    }

)


b.load_roi(
    [
        {
            "color": "rgba(237,72,155,0.25)",
            "features": [
                {
                    "chr": "chr1",
                    "start": 67655415,
                    "end": 67655611
                },
                {
                    "chr": "chr1",
                    "start": 67664225,
                    "end": 67666281
                }
            ]
        }
    ]
)

Sessions#

Load session object

import igv_notebook

igv_notebook.init()

b = igv_notebook.Browser({})

b.load_session({
    "reference": {
        "id": "hg19",
        "name": "Human (CRCh37/hg19)",
        "fastaURL": "https://s3.amazonaws.com/igv.broadinstitute.org/genomes/seq/hg19/hg19.fasta",
        "indexURL": "https://s3.amazonaws.com/igv.broadinstitute.org/genomes/seq/hg19/hg19.fasta.fai",
        "cytobandURL": "https://s3.amazonaws.com/igv.broadinstitute.org/genomes/seq/hg19/cytoBand.txt"
    },
    "locus": "chr8:128,746,315-128,755,680",
    "tracks": [

        {
            "url": "https://www.encodeproject.org/files/ENCFF000ATR/@@download/ENCFF000ATR.bigWig",
            "color": "#018448",
            "name": "GM12878 H3K4me3  signal ENCSR000AKA",
            "format": "bigwig",
            "type": "wig",
            "filename": "ENCFF000ATR.bigWig"
        }
    ]
})

Load session by URL

import igv_notebook

igv_notebook.init()

b = igv_notebook.Browser({})

b.load_session(url="https://igv-genepattern-org.s3.amazonaws.com/test/session.json")

Load session from file

!wget https://igv-genepattern-org.s3.amazonaws.com/test/session.json
--2023-07-25 15:12:11--  https://igv-genepattern-org.s3.amazonaws.com/test/session.json
Resolving igv-genepattern-org.s3.amazonaws.com (igv-genepattern-org.s3.amazonaws.com)... 54.231.138.81, 3.5.29.191, 52.217.99.76, ...
Connecting to igv-genepattern-org.s3.amazonaws.com (igv-genepattern-org.s3.amazonaws.com)|54.231.138.81|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 703 [application/json]
Saving to: ‘session.json’

session.json        100%[===================>]     703  --.-KB/s    in 0s      

2023-07-25 15:12:12 (29.7 MB/s) - ‘session.json’ saved [703/703]
import igv_notebook

igv_notebook.init()

b = igv_notebook.Browser({})

b.load_session(path="/content/session (8).json")
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-18-0f5d275eb086> in <cell line: 7>()
      5 b = igv_notebook.Browser({})
      6 
----> 7 b.load_session(path="/content/session (8).json")

/usr/local/lib/python3.10/dist-packages/igv_notebook/browser.py in load_session(self, session, url, path)
     89 
     90         if path is not None:
---> 91             with open(path) as user_file:
     92                 session = json.load(user_file)
     93 

FileNotFoundError: [Errno 2] No such file or directory: '/content/session (8).json'
import igv_notebook
igv_notebook.init()
igv_notebook.version()